#include<bits/stdc++.h>
using namespace std;
#define ll long long

int main(){
  int n;
  cin>>n;
  vector<int> v(n);
  vector<ll> sum(n,0);
  for(int i=0;i<n;i++){
    cin>>v[i];
    if(i==0)sum[i]=v[i];
    if(i>0)sum[i]=sum[i-1]+v[i];
  }
  ll minn=LLONG_MAX;
  for(int i=1;i<n;i++){
    minn=min(minn,max(sum[i-1],sum[n-1]-sum[i-1]));
  }
  cout<<minn<<endl;


  return 0;
}


//题目：并行处理
//
//描述：
//有n个任务需要分配到2块GPU上运行，一块GPU同时只能运行一个任务，    2块GPU可以并行运行。每个任务只能安排到同一块GPU运行。现在需要选取一个适当的k，
// 使得前k个任务在第一块GPU运行，后面n-k个任务在第二个GPU运行，运行时间最短。
//输入格式
//    第一行，一个整数n，表示任务数。1<=n<=100000
//    接下来n个整数，表示每个任务的运行时间。1<=ai<=10^9。
//输出格式
//    一个数，表示最短运行时间。
//输入样例
//3
//4 2 3
//输出样例
//5